package ar.com.ctrln.view.dashboard.principal;

import java.util.List;

import org.zkoss.spring.security.SecurityUtil;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.select.annotation.VariableResolver;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zk.ui.select.annotation.WireVariable;
import org.zkoss.zul.Label;
import org.zkoss.zul.ListModel;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;

import ar.com.ctrln.control.principal.ConsultarMovimiento;
import ar.com.ctrln.persistence.model.sistema.dashboardPpal.Movimiento;
import ar.com.ctrln.view.ui.comportamientoVentana.AbstractMinimizarVentana;

@VariableResolver(org.zkoss.zkplus.spring.DelegatingVariableResolver.class)
public class MovimientoController extends AbstractMinimizarVentana {

	private static final long serialVersionUID = -879453295074833199L;

	@WireVariable
	private ConsultarMovimiento consultarMovimiento;

	@Wire
	private Window wUltimos;

	private List<Movimiento> movimientos;

	@Wire
	private Listbox lbMovimiento;

	@Wire("#txtFilter")
	private Textbox txtFilter;

	@Wire
	private Label footer_label;

	@Override
	public void doAfterCompose(Component comp) throws Exception {
		// TODO Auto-generated method stub
		super.doAfterCompose(comp);

		if (!SecurityUtil.isAllGranted("ROLE_ADMIN")) {
			wUltimos.setVisible(false);
		} else {

			movimientos = consultarMovimiento.listaMovimiento();
			ListModelList<Movimiento> modelo = new ListModelList<Movimiento>();

			// if (movimientos.size() > 3){
			// for(int i = 4;i<movimientos.size();i++){
			// movimientos.get(i).setDescripcion("<div class='font-style:bold'>"+movimientos.get(i).getDescripcion()+"</div>");
			// }
			// }

			modelo.addAll(movimientos);
			lbMovimiento.setModel(modelo);
		}
	}

	public ListModel<Movimiento> getConsultaMovimiento() {
		movimientos = consultarMovimiento.listaMovimiento();
		return new ListModelList<Movimiento>(movimientos);
	}

	@SuppressWarnings({ "unchecked", "rawtypes" })
	public void getFilter(Event event) {
		((Textbox) event.getTarget())
				.setValue(((org.zkoss.zk.ui.event.InputEvent) event).getValue());

		lbMovimiento.setModel(new ListModelList(movimientos));

		if (lbMovimiento.getItemCount() > 0) {
			footer_label.setValue("");
			footer_label.setValue("Un total de " + lbMovimiento.getItemCount()
					+ " Clientes");
		} else {
			footer_label.setValue("Ningun Resultado...");
			footer_label.setValue("");
		}
		((Textbox) event.getTarget()).setFocus(true);
	}

}
